<?php

class loja_compraModel extends Model{
    protected $tabela = "loja_compra";
    protected $pkey   = "cod_compra";
    protected $dados = array(
        
        'cod_compra' => array(
            'name'    => "Código da Compra",
            'pkey'    => true,
            'ai'      => true,
            'type'    => 'int',
            'size'    => '11',
            'grid'    => true,
            'notnull' => true
         ),
        
        'cod_usuario' => array(
            'name'      => 'Cliente',
            'type' 	=> 'int',
            'notnull'   => true, 
            'grid'      => true,
            'fkey'      => array(
                'model' 	=> 'usuario/dados', 
                'cardinalidade' => '1n',//nn 1n 11
                'keys'          => array('cod_usuario', 'nome')
            )
         ),
        
        'data' => array(
            'name'     => 'Data da Venda',
            'type'     => 'timestamp',
            'default'  => 'CURRENT_TIMESTAMP',
            'especial' => 'calendar',
            'notnull'  => true
        ),

        'total' => array(
            'name'     => 'Valor da compra',
            'type'     => 'float',
            'size'     => '(20,2)',
            'especial' => 'monetary',
            'grid'     => true,
            'notnull'  => true
        ),
        
        'status' => array(
            'name'     => 'Status',
            'grid'     => true,
            'notnull'  => true,
            'type'     => 'enum',
            'default'  => 'sa',
            'options'  => array(
                'ap'    => 'Aprovada',
                're'    => 'Reprovada',
                'ca'    => 'Cancelada',
                'et'    => 'Enviada para a transportadora',
                'sa'    => 'Sob avaliação',
                'en'    => 'Entregue')
        )
    );
    
    public function getPedidosByUser($cod_usuario, $status = "", $cod_compra = "", $date = ""){
        $pred = "";
        if($status != "")
            if(array_key_exists($status, $this->dados['status']['options']))
                $pred .= "AND `status` = '$status'";
        if($cod_compra != "") $pred .= "AND `cod_compra` = '$cod_compra'";
        if($date != "")       $pred .= "AND `data` >= '$date'";
        
        $where = "`cod_usuario` = '$cod_usuario' $pred";
        return $this->selecionar(array(), $where, "", 0, "data DESC");
    }
    
    public function cancelarPedido($cod_pedido){
        
        $this->LoadModel("usuario/login", 'uobj');
        $cod = $this->uobj->getCodUsuario();
        $where = "`cod_usuario` = '$cod' AND `cod_compra` = '$cod_pedido'";
        $pedido = $this->selecionar(array('status'), $where);
        $pedido = array_shift($pedido);
        if($pedido['status'] != 'sa'){
            $this->setErrorMessage("Não é possível cancelar esta compra, pois não está sob avaliação");
            return false;
        }
        
        $dados = array('status' => 'ca');
        if(!$this->db->Update($this->tabela,$dados, $where)){
            $this->setErrorMessage($this->db->getErrorMessage());
            return false;
        }
        
        $this->setSuccessMessage("Compra cancelada corretamente");
        return true;
    }
    
    public function finalizar(){
        
        //carrega as classes necessárias
        $this->LoadModel("loja/carrinho"        , "carobj");
        $this->LoadModel("usuario/login"      , "uobj");
        $this->LoadModel("loja/compra/cproduto" , "cpobj");
        $this->LoadModel("loja/produto"         , "pobj");
        $this->LoadResource("html", "html");
        
        //se não existe nenhum produto no carrinho não há compra a ser feita
        $carrinho = $this->carobj->getCarrinho();
        if(empty ($carrinho)) return false;
        
        //insere a compra no banco de dados
        $arr['total']       = $this->carobj->getTotal();
        $arr['cod_usuario'] = $this->uobj->getCodUsuario();
        $arr['status']      = 'sa';
        if(!$this->inserir($arr)) return false;
        
        //insere os produtos comprados
        $var['cod_compra'] = $this->getLastId();
        foreach($carrinho as $cod => $car){
            $item = $this->pobj->getSimpleItem($cod, array('cod_produto', 'preco'));
           // echo $this->pobj->db->getSentenca();
            if(!empty($item)){
                $var['cod_produto']    = $cod;
                $var['valor_produto']  = $item['preco'];
                $var['quantidade']     = $car['qtd'];
                //print_r($var);
                //die("deu sim");
                $this->cpobj->inserir($var);
            }
            //die($cod);
        }

        //finaliza o carrinho de compras
        $this->carobj->finalizar();
        return true;
        
    }
}

?>
